<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

        // 1. 封装的业务
        function getData() {
            // 1.1 基于Promise的容器
            // const a1 = new Promise((resolve, reject) => {
            return new Promise((resolve, reject) => {
                const num = Math.floor(Math.random() * 30 + 3);
                if (num % 2 === 0) {
                    // console.log('是偶数，可以做处理。');
                    // 1.2 成功
                    resolve('是偶数，可以做处理。');
                } else {
                    // throw new RangeError('不能给奇数啊兄嘚!')
                    // 1.3 失败
                    reject('不能给奇数啊兄嘚!');
                }
            })

            // 1.3 返回 promise 的结果
            // return a1;
        }

        // 2. 其实，promise就是把之前应该写在回调函数里面的业务
        // 可以放出来写了，还可以分不同的状态来写
        // console.log(getData());
        const p1 = getData();

        // 3. p1 是实例对象，实例对象有俩方法  
        // then 处理成功   catch 捕获失败
        p1.then(function (data) {
            console.log('成功了！---', data)
        })

        p1.catch(function (err) {
            console.log('失败了，报错了----', err);
        })

        // promise 代码内部报错不会阻塞执行
        console.log(1100);

    </script>
</body>

</html>